/**
 * @author Liaorun
 */
public class CorpFlightBookings {


    public static int[] corpFlightBookings(int[][] bookings, int n) {
        // 1 2 3 4 n
        // 将上面的原数组这样出来一下 0 1 2 3 4 n n+1
        int[] cnt = new int[n + 2];

        for (int[] book : bookings) {
            // start book[0]
            // end book[1]
            // 票 book[2]

            // 开始的位置 + 购买的票数
            cnt[book[0]] += book[2];
            // 结束的位置的下一个位置 - 购买的票数
            cnt[book[1] + 1] -= book[2];
        }

        // 计算最后结果
        for (int i = 1; i < cnt.length; i++) {
            // 每个位置的值 = cnt[0..i]的和（前缀和）
            cnt[i] += cnt[i - 1];
        }

        int[] ans = new int[n];

        for (int i = 0; i < n; i++) {
            ans[i] = cnt[i + 1];
        }

        return ans;
    }
}
